<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

<script>
    // 常用正则表达式
    // 1. 纯数字：^[0-9]*$
    // 2. 纯汉字：^[\u4e00-\u9fa5]{0,}$
    // 3. 英文字母组成的字符串：^[A-Za-z]+$
    // 3. 英文和数字：^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
    // 4. 手机号码：^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
    // 5. 电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX)：^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
    // 6. 身份证号(15位、18位数字)：^\d{15}|\d{18}$
    // 7. 密码(以字母开头，长度在6~18之间，只能包含字母、数字和下划线)：^[a-zA-Z]\w{5,17}$
    // 8. 首尾空白字符的正则表达式：^\s*|\s*$或(^\s*)|(\s*$) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等)，非常有用的表达式)
    // 9. 中文字符的正则表达式：[\u4e00-\u9fa5]
    
    //\d 是否为数字，\D是否为非数字，\w是否为字母和数字，\W是否为非字母和数字 \s 不可见字符（空格换行）\S可见字符
    console.log(/\d/.test(1));//true数字就是数字
    console.log(/\d/.test("1"));//true字符串数字也是数字
    console.log(/\d/.test("d"));//false非数字就不是数字
    console.log(/\D/.test("d"));//true
    console.log(/\D/.test("1"));//false
    console.log(/\D/.test(1));//false
    console.log(/\d/.test("1d"));//test不精确，带了匹配的也会返回true

    console.log(/\w/.test("dd"));//true
    console.log(/\w/.test("1"));//true
    console.log(/\W/.test("Dd"));//false
    console.log(/\W/.test("11"));//false

    console.log(/\s/.test(" "));//true
    console.log(/\S/.test(" "));//false
    console.log(/\S/.test("D"));//true

    var regExp = /\d/;
    console.log(regExp.test("11"));//true
    //[]取里面每一项，|是或者，^非
    console.log(/[abc]d|w/.test("ad"));//true [里面的每一项都拿出来]和d结合，ad/bd/cd只要存在就返回true
    //[a-z]中间用-是范围的
    console.log(/[a-z]/.test("a"));//true a存在于a-z中
    //可以组合匹配
    console.log(/a-zA-Z0-4/.test("a"));//true;
    //^一般用在限定开头，$限定结束
    console.log(/^ok$/.test("ok"));//true
    //*可以出现多次0-N次
    console.log(/^a*$/.test("aaaaaa"));//true
    console.log(/^a*$/.test(""));//true
    console.log(/^a7*$/.test("a7"));//true
    console.log(/^(a7)*$/.test("a7a7"));//true
    //+可以出现多次1-N次
    console.log(/^a+$/.test(""));//false
    console.log(/^a+$/.test("aaaaaaa"));//true
    //?可以出现0-1次
    console.log(/^a?$/.test("a"));//true
    console.log(/^a?$/.test(""));//true
    console.log(/^a?$/.test("aaaa"));//false

    //{}出现可以出现自定义次数 再后面出现逗号表示可以出现大于该次数值多少
    console.log(/^a{2}$/.test("aa"));//true
    console.log(/^a{2}$/.test("aaa"));//false
    console.log(/^a{2}$/.test("a"));//false
    console.log(/^a{2,}$/.test("aaaaaa"));//false  必须大于2次
    console.log(/^a{2,5}$/.test("aaaaaa"));//false 必须大于2次小于5次


</script>
</body>
</html>